//Page Object
// const WXAPI = require("apifm-wxapi")
import { userLogin, userLevel, getBannerList, getCategoryList, getCateGoodsList } from '../../api/index'
import { strToObject, showToastUtil, setStorage, getStorage } from '../../utils/util'
// import { request } from "../../request/index"
// WXAPI.init("minastore")
Page({
  data: {
    swiperList: [],
    category1List: [],//一级分类
    category2List: [],//二级分类
    recomList: [],//推荐商品列表
    page: 1,
    totalPage: 0,//总页数
    totalRow: 0,//总商品数量
    pageSize: 30,
    recommendStatus: 1,//推荐状态''-所有；0-一般；1-推荐
  },
  // 获取时效code
  wxCodeLoginBefore(e) {
    const _this = this
    const wxcode = getStorage('wxcode')
    // 已存在code，验证时效性
    if (wxcode) {
      wx.checkSession({
        fail: () => {
          _this.wxCodeLogin()
        },
      });
    } else {
      // 不存在，直接登录
      _this.wxCodeLogin()
    }

  },
  // 微信时效登录
  wxCodeLogin() {
    const _this = this
    wx.login({
      success(res) {
        if (res.code) {
          // 发起网络请求-登录商城
          setStorage('wxcode', res.code)
          _this.loginStore(res.code)
        } else {
          // 登录失败
          setStorage('wxcode', '')
          showToastUtil('登录失败', false)
        }
      }
    })
  },
  // 登录商城
  loginStore(code) {
    userLogin(code).then(res => {
      if (res.code === 0) {
        const { token = '' } = res.data || {}
        setStorage('storetoken', token)
        showToastUtil('登录成功', true)
      } else {
        setStorage('storetoken', '')
        showToastUtil('登录失败', false)
      }
    })
  },
  //options(Object)
  onLoad: function (options) {
    const tokens = getStorage('storetoken')
    if (!tokens) {
      // 登录
      this.wxCodeLoginBefore()
    } else {
      userLevel().then(res => {
        // token无效，重新登录
        if (res.code === 2000) {
          // 登录
          this.wxCodeLoginBefore()
        }
      })
    }
    // 获取轮播图列表
    getBannerList().then(res => {
      this.setData({ swiperList: res.data || [] })
    })
    // 获取分类列表
    getCategoryList().then(res => {
      const data = res.data ? res.data : []
      this.setData({
        // 首页只抽取顶层分类标签
        category1List: data.filter(v => v.level === 1),
        category2List: objChangeOne(data.filter(v => v.level === 2))
      })
    })

    this.getRecomList()

    /** 
     * name objChangeOne
     * params {Array} arr 传入数组列表
     * return 处理好的对象
    */
    const objChangeOne = (arr) => {
      arr.forEach(v => { v.remark = strToObject(v.remark) })
      return arr
    }




    // api工厂插件请求模式
    // WXAPI.banners().then(res => {
    //   if (res.code === 0) {
    //     this.setData({ swiperList: res.data })
    //   }
    // }).catch(err => {
    //   console.log('err==', err)
    // });
    // 微信自带请求
    // wx.request({
    //   url: 'https://api.it120.cc/minastore/shop/goods/category/all', //仅为示例，并非真实的接口地址
    //   header: {
    //     'content-type': 'application/json' // 默认值
    //   },
    //   method: 'GET',
    //   dataType: 'json',
    //   responseType: 'text',
    //   success: (res) => {
    //     // 请求成功
    //     // console.log(res.data)
    //     this.setData({
    //       // 首页只抽取顶层分类标签
    //       category: res.data.filter(v => v.level === 1)
    //     })
    //   },
    //   fail: (err) => {
    //     // 请求失败
    //     console.log('err==', err)
    //   },
    //   complete: (com) => {
    //     // 请求结束
    //     console.log('com==', com)
    //   }
    // });

    // const params = {
    //   url: 'https://api.it120.cc/minastore/shop/goods/category/all', //仅为示例，并非真实的接口地址
    //   header: {
    //     'content-type': 'application/json' // 默认值
    //   },
    //   method: 'GET',
    //   dataType: 'json',
    //   responseType: 'text',
    // }
    // // Promise方法
    // request(params).then(res => {
    //   this.setData({
    //     // 首页只抽取顶层分类标签
    //     category: res.data.filter(v => v.level === 1)
    //   })
    // })

  },
  // 获取商品推荐列表
  getRecomList() {
    const { page, pageSize, recommendStatus } = this.data
    getCateGoodsList({ page, pageSize, recommendStatus }).then(res => {
      const { result = [], totalPage = 0, totalRow = 0 } = res.data
      this.setData({ recomList: this.data.recomList.concat(result), totalPage, totalRow })
    })
  },
});
